<?php
declare (strict_types = 1);

namespace app\admin\listener;

use sheep\traits\admin\AdminLog as AdminLogTrait;

class AdminLog
{
    /**
     * 管理员日志 trait
     */
    use AdminLogTrait;

    public function handle($user)
    {
        // 不是 get 请求
        if (!request()->isGet() && !request()->isOptions()) {
            // 只有管理员操作，才会记录日志
            if ($this->isAdminOper()) {
                // 记录日志
                $this->record();
            }
        }
    }


    /**
     * 是否是 admin 操作
     *
     * @return boolean
     */
    private function isAdminOper()
    {
        $app_name = app('http')->getName();
        $controller_name = request()->controller();

        if ($app_name == 'admin' || strpos($controller_name, 'admin.') === 0) {
            // admin 模块，或者别的模块中 controller/admin 目录，记录日志
            return true;
        }
        return false;
    }
}
